#ifndef __MOVEMEAN_H
#define __MOVEMEAN_H

#include "stdio.h"
#include "stdint.h"

// 滑动平均的最大滤波长度
#define Wismed_Movmean_Buff_Max_Len 200
// 滑动平均工作模式
#define Wismed_Movmean_Work_Normal 0		// 通用模式
#define Wismed_Movmean_Work_NoDelay 1		// 去延时模式



//声明用于做滑动平均的结构体 大小可以在使用时指定
typedef struct Wismed_Movmean_Manager {
    float *fMovMeanBuf;//[Wismed_Movmean_Buff_Max_Len];
    uint16_t nBufLen;
    int nMovMeanIndex;
    double dMovmeanSum;
    // 去延迟使用（数组索引可以与数组movMeanBuf使用同一个）
    float *fMovMeanDiffBuf;//[Wismed_Movmean_Buff_Max_Len];
    double dMovMeanDiffsum;
    int nDealDataCnt;	//已经处理数据个数
} Wismed_Movmean_Manager_t;


void wismed_movean_init(Wismed_Movmean_Manager_t *manager);
float wismed_movmean(float datain, int window, int mode, Wismed_Movmean_Manager_t *manager);


#endif




